using System.Collections.Generic;
using System.Linq;

namespace nice_157_advices.Advices
{
    /// <summary>
    /// 84.使用 PLINQ
    /// </summary>
    public static class _84
    {
        /**
         * 建议在对集合中的元素项进行操作的时候使用PLINQ代替LINQ。但是要记住，不是所有并行查询的速度都会比顺序查询快，在对集合执行某些方法时，顺序查询的速度会更快一点，如方法ElementAt等。在开发中，我们应该仔细辨别这方面的需求，以便找到最佳的解决方案。
         */
        public static void Go ()
        {
            List<int> intList = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7 };
            var query = from p in intList select p;
            System.Console.WriteLine("LINQ:");
            foreach (var item in query)
            {
                System.Console.WriteLine(item.ToString());
            }

            var queryParallel = from p in intList.AsParallel() select p;
            System.Console.WriteLine("PLINQ:");
            foreach (var item in queryParallel)
            {
                System.Console.WriteLine(item.ToString());
            }
        }
    }
}